    var n, o = jQuery,
        r = o("#uploader"),
        l = o('<ul class="filelist"></ul>').appendTo(r.find(".queueList")),
        d = r.find(".statusBar"),
        p = d.find(".info"),
        c = r.find(".uploadBtn"),
        u = r.find(".placeholder"),
        f = d.find(".layui-progress").hide(),
        m = 0,
        h = 0,
        g = window.devicePixelRatio || 1,
        v = 110 * g,
        b = 110 * g,
        k = "pedding",
        w = {},
        imgArr = [],//存储上传路径
        x = function () {
            var e = document.createElement("p").style,
                a = "transition" in e || "WebkitTransition" in e || "MozTransition" in e || "msTransition" in e || "OTransition" in e;
            return e = null, a
        }();
    if (!WebUploader.Uploader.support()) throw alert("Web Uploader 不支持您的浏览器！如果你使用的是IE浏览器，请尝试升级 flash 播放器"), new Error("WebUploader does not support the browser you are using.");
    n = WebUploader.create({
        auto: false,// 选完文件后，是否自动上传。
        //配置压缩的图片的选项 false不压缩
        compress: {
            // width: 1600,
            // height: 1600,
            // quality: 90,// 图片质量，只有type为`image/jpeg`的时候才有效。
            // allowMagnify: false,// 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.
            // crop: false,// 是否允许裁剪。
            // preserveHeaders: true,// 是否保留头部meta信息。
            // noCompressIfLarger: false,// 如果发现压缩后文件大小比原来还大，则使用原来图片 // 此属性可能会影响图片自动纠正功能
            compressSize : 10*1024*1024,//单位字节，如果图片大小小于此值，不会采用压缩
        },
        //配置生成缩略图的选项。
        // thumb:{
        //     width: 110,
        //     height: 110,
        //     quality: 70, // 图片质量，只有type为`image/jpeg`的时候才有效。
        //     allowMagnify: true,// 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.
        //     crop: true, // 是否允许裁剪。
        //     type: 'image/jpeg'// 为空的话则保留原有图片格式// 否则强制转换成指定的类型。
        // },
        pick: {
            id: "#filePicker",// 选择文件的按钮
            multiple: true,//true多图上传 false单图上传
            label: "点击选择图片"
        },
        dnd: "#uploader .queueList",
        prepareNextFile:true,
        duplicate :true,// 重复上传图片，true为可重复false为不可重复
        paste: document.body,
        accept: {
            title: "Images",
            extensions: "gif,jpg,jpeg,bmp,png",//允许的文件后缀
            mimeTypes: 'image/jpg,image/jpeg,image/png,image/bmp,image/gif'//允许的文件后缀
        },
        swf: "/static/admin/webupload/Uploader.swf",// swf文件路径
        disableGlobalDnd: !0,//拖拽功能
        chunked: 0,// 分片上传大文件
        // chunkRetry: 10, // 如果某个分片由于网络问题出错，允许自动重传多少次？
        // thread: 100,// 最大上传并发数
        // method: 'POST',
        server: "/admin/Upload/upload",// 文件接收服务端。
        fileNumLimit: 10,//限制上传个数
        // fileSizeLimit: 100* 1024 * 1024,// 总上传限制大小
        fileSingleSizeLimit: 5*1024*1024, //限制上传单张图片文件大小，单位是B，1M=1024000B
    }), n.addButton({
        id: "#filePicker2",
        multiple: true,//true多图上传 false单图上传
        label: "继续添加"
    }), n.onUploadProgress = function (e, a) {
        var i = o("#" + e.id),
            t = i.find(".progress span");
        t.css("width", 100 * a + "%"), w[e.id][1] = a, s()
    }, n.onFileQueued = function (a) {
        c.removeClass('disabled');
        m++, h += a.size, 1 === m && (u.addClass("element-invisible"), d.show()), e(a), t("ready"), s();
        // alert(m);
        if (m > n.options.fileNumLimit) {
            n.removeFile(a, true);
            layer.msg( '最多只能上传'+  n.options.fileNumLimit +'张！',{icon:2,shade:0.1,time:2000});
            return;
        }
        // if(m == n.options.fileNumLimit){
        //     o("#filePicker2").addClass("element-invisible");
        // }
        var picList = $('#hid').val().split(',');
        //删除imgArr中的元素
        for(var i=0; i<picList.length; i++) {
            if(picList[i] == a.name) {
                $('#'+a.id).children('div').remove();
                $('#'+a.id).append('<span class="success"></span>');
                $('#'+a.id).append('<div ><span class="close-upimg" onclick="imgDel(this)" value="'+a.name+'"><i class="fa fa-times-circle"></i></span></div>');
                // c.addClass('disabled');
            }
        }
    }, n.onFileDequeued = function (e) {
        m--, h -= e.size, m || t("pedding"), a(e), s()
        // if(m < n.options.fileNumLimit){
        //     o("#filePicker2").removeClass("element-invisible");
        // }
    }, n.on("all", function (e) {
        switch (e) {
            case "uploadFinished":
                t("confirm");
                break;
            case "startUpload":
                t("uploading");
                break;
            case "stopUpload":
                t("paused")
        }
    }),n.on( 'uploadSuccess', function( e,d ) {
        if($("#photo").val() != ''){
            var imgs = $("#photo").val() + "," +d._raw;
        }else{
            var imgs = d._raw;
        }
        // imgArr.push(d._raw);//返回的图片地址存入imgArr
        // console.log(imgs);
        $("#photo").val(imgs);
        var a = o("#" + e.id);
        a.append('<div ><span class="close-upimg" onclick="imgDel(this)" value="'+d._raw+'"><i class="fa fa-times-circle"></i></span></div>');
    }), n.onError = function (e) {
        // alert(e);
        var err = '';
        switch (e) {
            case 'F_EXCEED_SIZE':
                err += '单张图片大小不得超过'+  n.options.fileSingleSizeLimit/1024/1024 + 'MB！';
                break;
            case 'Q_EXCEED_NUM_LIMIT':
                err += '最多只能上传'+  n.options.fileNumLimit +'张！';
                break;
            case 'Q_EXCEED_SIZE_LIMIT':
                err += '上传图片总大小超出'+ n.options.fileSizeLimit/1024/1024 +'MB！';
                break;
            case 'Q_TYPE_DENIED':
                err += '无效图片类型，请上传正确的图片格式！';
                break;
            case 'F_DUPLICATE':
                err += '文件不能重复上传！';
                break;
            default:
                err += '上传错误，请刷新！';
                break;
        }
        layer.msg( err,{icon:2,shade:0.1,time:2000});
    }, c.on("click", function () {
        return o(this).hasClass("disabled") ? !1 : void("ready" === k ? n.upload() : "paused" === k ? n.upload() : "uploading" === k && n.stop(true))
    }), p.on("click", ".retry", function () {
        n.retry()
    }), p.on("click", ".ignore", function () {
        o("#filePicker2").removeClass("element-invisible");
        //清除上传失败文件
        $.each(n.getFiles('error'),function(index,item){
            // console.log(item);
            $('#'+item.id).parents('li').remove();
            n.removeFile(item, true);//删除队列的文件
        })
    }), c.addClass("state-" + k), s();
    /*****************回显图片********************/
    var getFileBlob = function (url, cb) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", url);
        xhr.responseType = "blob";
        xhr.addEventListener('load', function() {
            cb(xhr.response);
        });
        xhr.send();
    };

    var blobToFile = function (blob, name) {
        blob.lastModifiedDate = new Date();
        blob.name = name;
        return blob;
    };

    var getFileObject = function(filePathOrUrl, cb) {
        getFileBlob(filePathOrUrl, function (blob) {
            cb(blobToFile(blob, 'test.jpg'));
        });
    };

    //需要编辑的图片列表
    if($('#hid').val() != ''){
        var picList = $('#hid').val().split(',');
        $.each(picList, function(index,item){
            getFileObject(item, function (fileObject) {
                var wuFile = new WebUploader.Lib.File(WebUploader.guid('rt_'),fileObject);
                var file = new WebUploader.File(wuFile);
                file.setStatus(status.COMPLETE);//加入队列设置状态完成上传
                file.name = item;
                n.addFiles(file)
                // alert(n.getStats().successNum)
            })
        });
    }
    /*****************回显图片********************/
    function e(e) {
        var a = o('<li id="' + e.id + '"><p class="title">' + e.name + '</p><p class="imgWrap"></p><p class="progress"><span></span></p></li>'),
            s = o('<div class="file-panel"><span class="cancel">删除</span><span class="rotateRight">向右旋转</span><span class="rotateLeft">向左旋转</span></div>').appendTo(a),
            i = a.find("p.progress span"),
            t = a.find("p.imgWrap"),
            r = o('<p class="error"></p>'),
            d = function (e) {
                switch (e) {
                    case 'Q_EXCEED_NUM_LIMIT':
                        text= '最多只能上传10张！';
                        break;
                    case "exceed_size":
                        text = "文件大小超出";
                        break;
                    case "interrupt":
                        text = "上传暂停";
                        break;
                    default:
                        text = "上传失败，请重试"
                }
                r.text(text).appendTo(a)
            };
        "invalid" === e.getStatus() ? d(e.statusText) : (t.text("预览中"), n.makeThumb(e, function (e, a) {
            if (e) return void t.text("不能预览");
            var s = o('<img src="' + a + '" >');
            t.empty().append(s)
        }, v, b), w[e.id] = [e.size, 0], e.rotation = 0), e.on("statuschange", function (t, n) {
            "progress" === n ? i.hide().width(0) : "queued" === n && (a.off("mouseenter mouseleave"), s.remove()), "error" === t || "invalid" === t ? (console.log(e.statusText), d(e.statusText), w[e.id][1] = 1) : "interrupt" === t ? d("interrupt") : "queued" === t ? w[e.id][1] = 0 : "progress" === t ? (r.remove(), i.css("display", "block")) : "complete" === t && a.append('<span class="success"></span>'), a.removeClass("state-" + n).addClass("state-" + t)
        }), a.on("mouseenter", function () {
            s.stop().animate({
                height: 30
            })
        }), a.on("mouseleave", function () {
            s.stop().animate({
                height: 0
            })
        }), s.on("click", "span", function () {
            var a, s = o(this).index();
            switch (s) {
                case 0:
                    return void n.removeFile(e);
                case 1:
                    e.rotation += 90;
                    break;
                case 2:
                    e.rotation -= 90
            }
            x ? (a = "rotate(" + e.rotation + "deg)", t.css({
                "-webkit-transform": a,
                "-mos-transform": a,
                "-o-transform": a,
                transform: a
            })) : t.css("filter", "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + ~~(e.rotation / 90 % 4 + 4) % 4 + ")")
        }), a.appendTo(l)
    }
    function a(e) {
        var a = o("#" + e.id);
        delete w[e.id], s(), a.off().find(".file-panel").off().end().remove()
    }
    function s() {
        var e, a = 0,
            s = 0,
            t = f.children();
        o.each(w, function (e, i) {
            s += i[0], a += i[0] * i[1]
        }), e = s ? a / s : 0, t.eq(0).children().eq(0).text(Math.round(100 * e) + "%"), t.eq(0).css("width", Math.round(100 * e) + "%"), i()
    }
    function i() {
        var e, a = "";
        "ready" === k ? a = "选中" + m + "张图片，共" + WebUploader.formatSize(h) + "。" : "confirm" === k ? (e = n.getStats(), e.uploadFailNum && (a = "已成功上传" + e.successNum + "张照片，" + e.uploadFailNum + '张照片上传失败，<a class="retry" href="#">重新上传</a>失败图片或<a class="ignore" href="#">忽略</a>')) : (e = n.getStats(), a = "共" + m + "张（" + WebUploader.formatSize(h) + "），已上传" + e.successNum + "张", e.uploadFailNum && (a += "，失败" + e.uploadFailNum + "张")), p.html(a)
    }
    function t(e) {
        var a;
        if (e !== k) {
            switch (c.removeClass("state-" + k), c.addClass("state-" + e), k = e) {
                case "pedding":
                    u.removeClass("element-invisible"), l.parent().removeClass("filled"), l.hide(), d.addClass("element-invisible"), n.refresh();
                    break;
                case "ready":
                    o("#filePicker2").removeClass("element-invisible"), l.parent().addClass("filled"), l.show(), d.removeClass("element-invisible"), n.refresh();
                    break;
                case "uploading":
                    // o("#filePicker2").addClass("element-invisible"),
                    f.show(), c.text("暂停上传");
                    break;
                case "paused":
                    f.show(), c.text("继续上传");
                    break;
                case "confirm":
                    if (f.hide(), c.text("开始上传"), a = n.getStats(), a.successNum && !a.uploadFailNum) return void t("finish");
                    break;
                case "finish":
                    // if(n.getStats().successNum < n.options.fileNumLimit){
                    o("#filePicker2").removeClass("element-invisible");
                    // }
                    // if(n.getStats().successNum == n.options.fileNumLimit){
                    c.addClass('disabled');
                    // }
                    a = n.getStats(), a.successNum ? layer.msg('上传成功',{icon:1,shade:0.1,time:2000}) : (k = "done", location.reload())
            }
            i()
        }
    }
    function imgDel(e){
        layer.confirm('确认删除此图片吗?', {icon: 3, title:'提示'}, function(index) {
            // alert( $("#photo").val());
            var add = $(e).attr('value');
            var id = $(e).parents('li').attr('id');
            var imgs = $("#photo").val().split(',')
            var pic = $('#hid').val().split(',');
            //删除imgArr中的元素
            for (var i = 0; i < imgs.length; i++) {
                if (imgs[i] == add) {
                    imgs.splice(i, 1);
                    break;
                }
            }
            $("#photo").val(imgs);
            var tag = 0;
            for (var i = 0; i < pic.length; i++) {
                if (pic[i] == add) {
                    imgArr.push(add);
                    tag = 1;
                }
            }
            $('#del').val(imgArr);
            if(tag == 0){
                $.ajax({
                    url: "/admin/Upload/deleteImg",
                    data: 'add=' + add,
                    type: 'post',
                    dataType: 'json',
                    success: function (res) {
                        if (res.code == 200) {
                            $(e).parents('li').remove();
                            n.removeFile(id, true);//删除队列的文件
                            // console.log(n.getFiles().length);
                        } else {
                            layer.msg('删除失败，请重试...', {icon: 2, shade: 0.1, time: 2000})
                        }
                    }
                })
            }else{
                // alert(imgArr);
                $(e).parents('li').remove();
                n.removeFile(id, true);//删除队列的文件
            }

            // alert( $("#photo").val());
            // console.log(n.getStats().numOfQueue);return;
            layer.close(index);
        });
    }
// });